package com.info.zhiduoduo.common.constants.project;

import com.info.zhiduoduo.common.utils.NumberUtil;

import org.apache.commons.lang3.StringUtils;

/**
 * 项目分类, 用于在以下表中区分项目类型:
 * <p> 发票表zdd_invoice : project_type
 * <p> 项目表zdd_company_project : type
 * <p> 佣金表zdd_partner_brokerage : project_type
 */
public interface ProjectType {

	/**  项目 */
	int ZHIDUODUO = 1;
	/** 智众包项目 */
	int CROWDSOURCE = 2;
	/**  项目 */
	int TAXER = 3;
	/** 长期项目子项目 */
	int LONG_TERM = 4;
	/** 委托发单- 项目 */
	int ENTRUST_ZHIDUODUO = 5;
	/** 委托发单-智众包项目 */
	int ENTRUST_CROWDSOURCE = 6;
	/** 创客团- 项目 */
	int MAKER_GROUPON_ZHIDUODUO = 7;
	/** 创客团-智众包项目 */
	int MAKER_GROUPON_CROWDSOURCE = 8;

	/** 判断是否是委托接单( 项目或智众包项目) */
	static boolean isEntrustProject(int projectType) {
		return NumberUtil.intIn(projectType, ENTRUST_ZHIDUODUO, ENTRUST_CROWDSOURCE);
	}

	/** 判断是否是创客团项目( 项目或智众包项目) */
	static boolean isMakerGrouponProject(int projectType) {
		return NumberUtil.intIn(projectType, MAKER_GROUPON_ZHIDUODUO, MAKER_GROUPON_CROWDSOURCE);
	}

	/** 判断是否是 和纯代理项目 */
	static boolean isTaxerProject(int projectType) {
		return NumberUtil.intIn(projectType, TAXER);
	}

	/** 判断是否是智众包项目(普通智众包,委托接单智众包,创客团智众包) */
	static boolean isCrowdsourceProject(int projectType) {
		return NumberUtil.intIn(projectType, CROWDSOURCE, ENTRUST_CROWDSOURCE, MAKER_GROUPON_CROWDSOURCE);
	}

	/** 判断是否是 项目(普通 ,委托接单 ,创客团 ) */
	static boolean isZhiduoduoProject(int projectType) {
		return NumberUtil.intIn(projectType, ZHIDUODUO,LONG_TERM, ENTRUST_ZHIDUODUO, MAKER_GROUPON_ZHIDUODUO);
	}

	/** 判断项目是否是zdd_company_project表里的 */
	static boolean isInZddCompanyProjectTable(int projectType) {
		return NumberUtil.intIn(projectType, ZHIDUODUO, LONG_TERM);
	}

	/** 判断项目是否是zdd_crowdsource_project表里的 */
	static boolean isInZddCrowdsourceProjectTable(int projectType) {
		return NumberUtil.intIn(projectType, CROWDSOURCE);
	}

	/** 判断项目是否是zdd_entrustment_project表里的 */
	static boolean isInZddEntrustmentProjectTable(int projectType) {
		return NumberUtil.intIn(projectType, ENTRUST_ZHIDUODUO, ENTRUST_CROWDSOURCE, MAKER_GROUPON_ZHIDUODUO, MAKER_GROUPON_CROWDSOURCE);
	}

	/** 获取所有属于智众包项目的类型, 用逗号分隔 */
	static String crowdsourceProjectTypes() {
		return StringUtils.joinWith(",", CROWDSOURCE, ENTRUST_CROWDSOURCE, MAKER_GROUPON_CROWDSOURCE);
	}

	/** 获取所有属于 项目的类型, 用逗号分隔 */
	static String zhiduoduoProjectTypes() {
		return StringUtils.joinWith(",", ZHIDUODUO, ENTRUST_ZHIDUODUO, MAKER_GROUPON_ZHIDUODUO);
	}

	/** 获取所有属于委托接单项目的类型, 用逗号分隔 */
	static String entrustProjectTypes() {
		return StringUtils.joinWith(",", ENTRUST_ZHIDUODUO, ENTRUST_CROWDSOURCE);
	}

	/** 发票表- +长期项目+委托 +创客团  */
	static String invoiceZddProjectTypes() {
		return StringUtils.joinWith(",", ZHIDUODUO, LONG_TERM, ENTRUST_ZHIDUODUO, MAKER_GROUPON_ZHIDUODUO);
	}

	/** 成本发票表-智众包+长期项目+委托智众包+创客团智众包 */
	static String invoiceCroProjectTypes() {
		return StringUtils.joinWith(",", CROWDSOURCE, ENTRUST_CROWDSOURCE, MAKER_GROUPON_CROWDSOURCE);
	}

}
